package pms.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

import pms.dao.AbteilungDao;
import pms.om.Abteilung;

/**
 * <p>
 * Ein Controller, der die Abteilungen editiert
 * </p>
 * <p>
 * ModelAndView Infos
 * <p>
 * Es wird eine Abteilung anhand seiner ID gesucht, falls es diese gibt,
 * wird diese geaendert, ansonsten wird eine neue Abteilung angelegt.
 * <ul>
 * <li>title: Ueberschrift dieser View</li>
 * <li>message: Hinweise fuer den Benutzer</li>
 * <li>abteilung: hier wird die gesuchte Abteilung ausgegeben, falls sie 
 * schon angelegt ist, ansonsten wird eine neue Abteilung angelegt.</li>
 * </ul>
 * Der Name der ausgebenden View ist: 'editAbteilung.jsp'
 * </p>
 * @see AbteilungDao
 */

public class EditAbteilung extends AbstractController 
{

	private AbteilungDao abteilungDao;
	
	public void setAbteilungDao(AbteilungDao abteilungDao) 
	{this.abteilungDao = abteilungDao;}

	protected ModelAndView handleRequestInternal(
			HttpServletRequest httpServletRequest,
			HttpServletResponse httpServletResponse) throws Exception 
			{
			ModelAndView mv = new ModelAndView();
		try {
			int id = Integer.parseInt(httpServletRequest.getParameter("id"));
			// wenn id nicht geparsed werden kann, dann wird ein neues Objekt angelegt
			mv.addObject("title", "Abteilung ändern");
			mv.addObject("message", "Hier können Sie die Eigenschaften der Abteilung ändern. Klicken Sie dann anschließend auf Übernehmen.");
			mv.addObject("abteilung", abteilungDao.findById(id));
		} catch (NumberFormatException e) {
			mv.addObject("title", "Neue Abteilung eintragen");
			mv.addObject("message", "Bitte geben Sie die Eigenschaften der Abteilung ein und klicken Sie anschließend auf 'Übernehmen'.");
			mv.addObject("abteilung", new Abteilung());
		}
		mv.setViewName("editAbteilung");
		return mv;
	}
}